package admin

import (
	"gitee.com/gopher2011/gin"
	"gitee.com/gopher2011/mall/app/dao"
	"gitee.com/gopher2011/mall/app/service"
	"net/http"
	"strconv"
)

// 优惠券管理。/coupon
var SmsCoupon = &smsCouponApi{}

type smsCouponApi struct{}

// 添加优惠券 /create Post 参数: dao.SmsCouponParam
func (it *smsCouponApi) Add(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.SmsCouponParam
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.SmsCoupon.Create(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "添加优惠券失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "添加优惠券成功!", "data": res})
	}
}

//删除优惠券 /delete/:id Post 参数: id
func (it *smsCouponApi) Delete(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("id"))
	res, err := service.SmsCoupon.Delete(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "删除优惠券失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "删除优惠券成功!", "data": res})
	}
}

// 修改优惠券 /update/:id	Post 参数:id,dao.SmsCouponParam
func (it *smsCouponApi) Update(r *gin.Context) {
	str := r.Param("id")
	id, _ := strconv.Atoi(str)
	// 将请求参数解析到 ptr上
	var ptr dao.SmsCouponParam
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.SmsCoupon.Update(int64(id), ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "修改优惠券失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "修改优惠券成功!", "data": res})
	}
}

//根据优惠券名称和类型分页获取优惠券列表 /list Get 参数:dao.SmsCouponList
func (it *smsCouponApi) List(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.SmsCouponList
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.SmsCoupon.List(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "分页获取优惠券列表失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "分页获取优惠券列表成功!", "data": res})
	}
}

//获取单个优惠券的详细信息 /:id	Get 参数:id
func (it *smsCouponApi) GetItem(r *gin.Context) {
	str := r.Param("id")
	id, _ := strconv.Atoi(str)
	res, err := service.SmsCoupon.GetItem(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "获取单个优惠券的详细信息失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "获取单个优惠券的详细信息成功!", "data": res})
	}
}
